package model

import "time"

var (
	// 菜单类型（目录
	SysMenu_TYPE_DIR = "M"

	//菜单类型（菜单）
	SysMenu_TYPE_MENU = "C"

	//菜单类型（按钮
	SysMenu_TYPE_BUTTON = "F"
)

// SysMenu 菜单权限表 表：sys_menu
type SysMenu struct {
	MenuId    int64      `gorm:"primary_key;column:menu_id"` // 菜单ID
	MenuName  *string    `gorm:"column:menu_name"`           // 菜单名称
	ParentId  *int64     `gorm:"column:parent_id"`           // 父菜单ID
	OrderNum  *int64     `gorm:"column:order_num"`           // 显示顺序
	Path      *string    `gorm:"column:path"`                // 路由地址
	Component *string    `gorm:"column:component"`           // 组件路径
	Query     *string    `gorm:"column:query"`               // 路由参数
	RouteName *string    `gorm:"column:route_name"`          // 路由名称
	IsFrame   *string    `gorm:"column:is_frame"`            // 是否为外链（0是 1否）
	IsCache   *string    `gorm:"column:is_cache"`            // 是否缓存（0缓存 1不缓存）
	MenuType  *string    `gorm:"column:menu_type"`           // 菜单类型（M目录 C菜单 F按钮）
	Visible   *string    `gorm:"column:visible"`             // 菜单状态（0显示 1隐藏）
	Status    *string    `gorm:"column:status"`              // 菜单状态（0正常 1停用）
	Perms     *string    `gorm:"column:perms"`               // 权限标识
	Icon      *string    `gorm:"column:icon"`                // 菜单图标
	CreateBy  *string    `gorm:"column:create_by"`           // 创建者
	CreateAt  *time.Time `gorm:"column:create_time"`         // 创建时间
	UpdateBy  *string    `gorm:"column:update_by"`           // 更新者
	UpdateAt  *time.Time `gorm:"column:update_time"`         // 更新时间
	Remark    *string    `gorm:"column:remark"`              // 备注
	Children  []*SysMenu `gorm:"-"`                          // 子菜单
}

// TableName 表名
func (s SysMenu) TableName() string {
	return "sys_menu"
}
